package org.jsola.hr.helper;

import org.jsola.common.ClassKit;
import org.jsola.common.DateKit;
import org.jsola.common.SafeKit;
import org.jsola.hr.dto.EmpNoticeAddDTO;
import org.jsola.hr.dto.EmpNoticeUpdateDTO;
import org.jsola.hr.entity.EmpNoticeDO;
import org.jsola.hr.query.EmpNoticeQuery;
import org.jsola.hr.service.IEmpNoticeService;
import org.jsola.hr.vo.EmpNoticeVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import java.util.Date;
import java.util.List;

import static org.jsola.hr.core.AbstractTest.SITE_ID;



/**
 * 员工通知
 *
 * @author zhr
 */
@Component
public class EmpNoticeTestHelper extends BaseTestHelper {
    
    @Autowired
    private IEmpNoticeService empNoticeService;

    /**
     * 生成add测试数据
     * @return EmpNoticeAddDTO
     */
    public EmpNoticeAddDTO getEmpNoticeAddDTO(){
        EmpNoticeAddDTO empNoticeAddDTO = new EmpNoticeAddDTO();
        empNoticeAddDTO.setReadEmpIds(getRandomValue("longtext",2147483647));
        empNoticeAddDTO.setNoReadEmpIds(getRandomValue("longtext",2147483647));
        empNoticeAddDTO.setReadCount(SafeKit.getInteger(getRandomValue("int",11)));
        empNoticeAddDTO.setNoReadCount(SafeKit.getInteger(getRandomValue("int",11)));
        empNoticeAddDTO.setFile(getRandomValue("text",10000));
        empNoticeAddDTO.setCompanyId(getRandomValue("varchar",32));
        empNoticeAddDTO.setTitle(getRandomValue("text",2147483647));
        empNoticeAddDTO.setContent(getRandomValue("text",2147483647));
        empNoticeAddDTO.setContentHasStyle(getRandomValue("text",2147483647));
        empNoticeAddDTO.setPublishDate((Date)ClassKit.getObjectValue(getRandomValue("datetime",0),"java.util.Date"));
        empNoticeAddDTO.setPublishEmpId(getRandomValue("longtext",2147483647));
        empNoticeAddDTO.setPublishUserId(getRandomValue("longtext",2147483647));
        empNoticeAddDTO.setPublishEmpRangeIsAll(SafeKit.getBoolean(getRandomValue("tinyint",1)));
        empNoticeAddDTO.setPublishEmpRange(getRandomValue("varchar",2147483647));
        empNoticeAddDTO.setPublishEmpTypeIsAll(SafeKit.getBoolean(getRandomValue("tinyint",1)));
        empNoticeAddDTO.setPublishEmpType(getRandomValue("varchar",2147483647));
        empNoticeAddDTO.setFormalType(SafeKit.getInteger(getRandomValue("int",11)));
        empNoticeAddDTO.setProps(getRandomValue("text",2147483647));
        empNoticeAddDTO.setReadStatus(SafeKit.getInteger(getRandomValue("int",1)));
        empNoticeAddDTO.setIsOnline(SafeKit.getBoolean(getRandomValue("tinyint",1)));
        empNoticeAddDTO.setOfflineDate((Date)ClassKit.getObjectValue(getRandomValue("datetime",0),"java.util.Date"));
        empNoticeAddDTO.setNoticeType(getRandomValue("varchar",11));
        empNoticeAddDTO.setStatus(SafeKit.getInteger(getRandomValue("int",4)));
        return empNoticeAddDTO;
    }


    /**
     * 生成update测试数据
     * @return EmpNoticeUpdateDTO
     */
    public EmpNoticeUpdateDTO getEmpNoticeUpdateDTO(EmpNoticeVO empNoticeVO){
        return empNoticeService.selectDOById(empNoticeVO.getId(), SITE_ID).to(EmpNoticeUpdateDTO.class);
    }

    /**
     * 生成查询数据
     * @return EmpNoticeQuery
     */
    public EmpNoticeQuery getEmpNoticeQuery() {
        EmpNoticeQuery empNoticeQuery = new EmpNoticeQuery();
        List<EmpNoticeDO> empNoticeDOList = empNoticeService.list(new EmpNoticeDO(),SITE_ID);
        if (!CollectionUtils.isEmpty(empNoticeDOList)) {
            EmpNoticeDO empNoticeDO = empNoticeDOList.get(0);
            empNoticeQuery = empNoticeDO.to(EmpNoticeQuery.class);
            if (empNoticeDO.getPublishDate() != null) {
                empNoticeQuery.setPublishDateStart(DateKit.getBeforeDay(empNoticeDO.getPublishDate(),-1));
                empNoticeQuery.setPublishDateEnd(DateKit.getBeforeDay(empNoticeDO.getPublishDate(),1));
            }
        }
        return empNoticeQuery;
    }

    /**
     * 保存示例
     * @return EmpNoticeVO
     */
    public EmpNoticeVO saveEmpNoticeExample(){
        EmpNoticeAddDTO addDTO = this.getEmpNoticeAddDTO();
        EmpNoticeVO empNoticeVO = empNoticeService.save(addDTO,buildTokenUser());
        return empNoticeVO;
    }


}

